1. Field of the Invention
This invention pertains generally to memory management systems. More particularly, the invention is an operating system and method for inheriting memory management policies in computers, embedded systems and other data processing systems and which further provides enhanced memory management.
2. The Prior Art
In embedded systems and other data processing systems and computers, operating systems provide the basic command function set for proper operation of the particular device. In routers, for example, router operating systems (ROS) provide the basic command functions for the router as well as various subsystem components which provide specific functions or routines provided by the router.
To provide desired high availability and serviceabilty features, embedded systems are increasingly using micro kernels in operating system designs. These micro kernels typically provide virtual memory support without any paging or backing storage support. That is, every process has its own memory space, and use of memory in the system is limited to the physical memory installed in the system. As a consequence, these systems may encounter low memory situations during operation, particularly on busy systems and in busy environments. For example, memory usage and consumption to accommodate a large number of routing tables in a router may create low memory situations.
In low memory situations, management and debugging of the system may become problematic as is known in the art. For example, where the kernel dedicates the entire physical memory space of the system for general application use, debugging and/or management of the system may be cumbersome if there is insufficient memory to spawn the processes required for debugging. Under such low memory conditions, the user of the system will typically be required to terminate (or “kill”) one or more other processes to free sufficient memory space for debugging.
Some systems have partially addressed this problem by reserving a pool of memory and providing a separate API (application program interface) to allocate from this “reserved” pool. When the system runs out of memory, debug and management entities allocate resources from the reserved pool. However, in message-based system, often debug and management entities spawn other processes and/or require libraries (i.e., support entities) which are not debug or management entities and which cannot allocate from the reserve pool of memory. Accordingly, debug and/or management processes may fail. In this scenario, the user of the system will typically be required to either terminate other processes or make special calls to allocate memory for the support entities.
Traditional desktop operating systems (e.g., UNIX™ or Windows®) rely on “backing” storage to create physical memory in the system as is known in the art. Most of these systems do not handle the condition where the system runs out of backing storage (i.e., when both physically installed memory and the backing storage is exhausted). The same problems outlined above for embedded systems become realized in systems with backing storage when the backing storage of such systems is depleted.
Accordingly, there is a need for an operating system architecture and method which provides for transparent inheritance of memory management policies in data processing systems and enhanced memory management. The present invention satisfies these needs, as well as others, and generally overcomes the deficiencies found in the background art.